泰科智能 ASCII编程详细例子解析
ASCII编程手册
1. 概述
这个手册描述使用ASCII接口控制泰科智能APM, APS, APX等系列驱动器的方法,适合对运动控制理论和操作,泰科智能驱动器及MCK软件有一定基础知识的人使用。
1.1. 泰科智能ASCII接口
泰科智能ASCII接口指的是使用一系列的指令集,通过RS232连接,来操作和监控泰科APM, APS, APX系列的驱动器。
例如,通过MCK软件对驱动器进行过配置之后,可以通过ASCII接口界面进行程序控制:
1:使能驱动器工作在编程位置控制模式
2:轴回零点
3:编程一系列运动并监控位置、速度及其他的实时变量
1.2. 通讯协议
Baud Rate | 9600到115200(上电或复位后自动设置为默认值9600)参考波特率设置 |
Data Format | N,8,1(即无奇偶校验,8位数据位,1位停止位) |
Flow Control | None |
1.3. 接口界面
可以通过单片机串口,或串口助手使用,界面如下(配置串口后打开串口发送命令):
<span style="font-size:14.0pt;font-family:"">2.指令集
本节列出了ASCII编程的指令集及其使用方法。
2.1. ASCII信息格式
发送ASCII数据的语法如下:
[<< span="">节点ID>] << span="">指令码> [<< span="">指令参数>…] << span="">回车>
其中:
[<< span="">节点ID>]: 指多点网络中某个节点的地址,范围0-127,后面要跟空格。
<< span="">指令码>: 是下面给出的指令代码,只有一个字母,后面要跟空格,如果是复位命令则直接回车即可。
指令代码 | 作用 |
s | 设置RAM或Flash中的一个变量值 |
g | 读取RAM或Flash中的一个变量值 |
c | 拷贝变量:从RAM到Flash或者从Flash到RAM |
r | 复位驱动器 |
t | 轨迹生成命令(用于位置控制模式) |
i | 读/写程序寄存器中的值 |
[<< span="">指令参数>…: ]指明命令做什么,如何去做。如果有多个参数,中间需用空格隔开。
<< span="">回车>: 回车键,指令结束。
变量所表代表的意义参考后面HU附录AUH。
示例:
指令 返回值 说明
s r0x30 1200 ok 设置RAM中0x30变量(位置环比例增益)为1200,ok表示成功执行
g r0x30 v 1200 读取RAM中0x30变量(位置环比例增益)的值,返回值是1200
g f0x17 e 15 意图读取Flash中0x17变量(实际电机位置)的值。返回值e 15表示读取的值不存在(实际电机位置只在RAM中)
若返回e << span="">错误号#>,请参考HHUTU错误代码UTHUH中查看错误原因.
<span style="font-size:12.0pt;font-family:"">
2.2. 设置(s)命令
S 命令用来给可写入的驱动器变量赋值。
S 命令的语法格式如下:
[可选节点ID] s << span="">存储区><< span="">变量ID> << span="">数值>…<< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�s: 是指令代码。后面跟一个空格
�<< span="">存储区>: 指出设置的变量在哪个存储区。f =flash, r = RAM
�<< span="">变量ID>: 指出要设置的变量。变量ID的格式可以是十进制的,也可以是十六进制的。
�<< span="">数值>: 是要设置的变量的新值。数值可以整数或者十六进制格式发送。如果需要多个值,中间请以空格隔开。
<< span="">回车>: 回车键,指令结束。
发送过s命令后,驱动器会有以下返回:
� ok<< span="">回车> 表示指令被正常接收
� e << span="">错误号>(回车) 表示指令无法被接收。请参考HHUTU错误代码UTHUH中查看错误原因。
s命令示例
指令 返回值 说明
s r0x30 1200 ok 设置RAM区变量0x30(位置环比例增益)为1200.返回ok表示指令被正常执行。
s f0x30 1200 ok 设置flash区变量0x30(位置环比例增益)为1200.返回ok表示指令被正常执行。
s r 0x30 1000 e 33 本想修改RAM区中的0x30为1200.返回33号错误。注意变量ID后有空格。
2.3. 获取(g)命令
g 命令用来获取驱动器变量的值。
g 命令的语法格式如下:
[可选节点ID] g << span="">存储区><< span="">变量ID><< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�g: 是指令代码。后面跟一个空格
�<< span="">存储区>: 指出设置的变量在哪个存储区。f =flash, r = RAM
�<< span="">变量ID>: 指出要获取的变量。变量ID的格式可以是十进制的,也可以是十六进制的。
�<< span="">回车>: 回车键,指令结束。
发送过g命令后,驱动器会有以下返回:
� v [数值]<< span="">回车> 其中数值表示变量中的内容。如果变量中包含多个数值,中间会以空格隔开。
� e << span="">错误号>(回车) 表示指令无法被接收。请参考HHUTU错误代码UTHUH中查看错误原因。
g命令示例
指令 返回值 说明
g r0x30 v 1200 获取RAM区变量0x30(位置环比例增益)的值。本例中显示返回的值是1200。
g f0x17 e 15 意欲获取flash中变量0x17(电机实际位置)的值。返回了15号错误(请求页中不存在该变量)。注意,电机实际位置只存储在RAM中。
2.4. 复制(c)命令
c 命令用来将一个变量的值从一个存储区拷贝到另外一个存储区(RAM到flash,或者flash到RAM)。
c 命令的语法格式如下:
[可选节点ID] c << span="">存储区><< span="">变量ID><< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�c: 是指令代码。后面跟一个空格
�<< span="">存储区>: 指出设置的变量在哪个存储区。f = flash, r = RAM
�<< span="">变量ID>: 指出要复制的变量。变量ID的格式可以是十进制的,也可以是十六进制的。
�<< span="">回车>: 回车键,指令结束。
发送过c命令后,驱动器会有以下返回:
� ok<< span="">回车> 表示指令被正常接收
� e << span="">错误号>(回车) 表示指令无法被接收。请参考HHUTU错误代码UTHUH中查看错误原因。
c命令示例
指令 返回值 说明
c r0x30 ok 将变量0x30的值从RAM中拷贝到flash中。ok表示指令被正确执行。
cf0x30 ok 将变量0x30的值从flash中拷贝到RAM中。ok表示指令被正确执行。
2.5. 驱动器复位(r)命令
r 命令用来立即对驱动器进行复位。该命令不需要其它参数。驱动器复位后,波特率设置为默认值9600.
r 命令的语法格式如下:
[可选节点ID] r<< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�r: 是复位命令代码。
�<< span="">回车>: 回车键,指令结束。
该命令发送后,驱动器不返回任何值。
r命令示例
指令 返回值 说明
r {无返回值} 驱动器被复位
注意:如果复位命令发送给了多点网络中的一个驱动器,会收到32号错误代码:“CAN Network communication failure”。这是因为在向网关驱动器(连有串口线的那个)应答前,驱动器进行了复位。这种情况下可以直接忽略该错误。
2.6. 轨迹生成(t)命令
t 命令控制轨迹生成器。它可以初始化一个新的运动,更新一个正在运行中的运动,或开始一个回零序列。也可以停止一个运动的执行。
t 命令的语法格式如下:
[可选节点ID] t << span="">子命令><< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�t: 是轨迹命令代码,后面跟一个空格。
�<< span="">子命令> :0 = 停止执行中的运动, 1 = 初始化/更新运动, 2 = 初始化回零序列
�<< span="">回车>:回车符,紧跟在子命令后,表示指令结束。
发送过t命令后,驱动器会有以下返回:
� ok<< span="">回车> 表示指令被正常接收。注意ok仅表示命令被驱动器接收。请查看轨迹状态寄存器,确认运动确实被初始化了。
� e << span="">错误号>(回车) 表示指令无法被接收。请参考HHUTU错误代码UTHUH中查看错误原因。
t命令示例
指令 返回值 说明
t 1 ok 初始化一个运动。
t2 e 33 本想初始化一个回零序列。返回了33号错误(ASCII命令语法错误)。注意命令和子命令之间没有空格。
2.6. 寄存器读写(t)命令
寄存器命令(i)用来读写CVM程序中的32个内部寄存器。
i 命令的语法格式如下:
[可选节点ID] i
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127. 后面要跟一个空格。
�i: 是寄存器命令代码。后面跟一个空格。
�
�<< span="">数值>: 是要写进寄存器中的新值。如果命令中没有此项,就表示要读取寄存器中的值。数值可以整型或十六进制格式发送。
�<< span="">回车>: 回车符,紧跟在寄存器号之后或者数值之后,表示指令结束。
发送过i命令后,驱动器会有以下返回:
� ok<< span="">回车> 表示指令被正常接收,并且数值已经被写入到寄存器中。
� r [数值]<< span="">回车> 其中数值就是寄存器中的内容。
� e << span="">错误号>(回车) 表示指令无法被接收。请参考HHUTU错误代码UTHUH中查看错误原因。
i命令示例
指令 返回值 说明
i r0 15 ok 向第一个寄存器(寄存器0)中写入15
i r0 r15 读第一个寄存器中的值。示例显示返回的是15
8 i r0 r 35 读CAN网络中节点号为8的驱动器中寄存器0的值。示例显示返回值是35
2.8. 多轴驱动器ASCII信息格式
一些驱动器可以支持多达三个轴的运动。当向驱动不止一个轴的驱动器发送ASCII命令是,必须按以下格式指出设置的轴:
[<< span="">可选节点>].<< span="">轴号> << span="">命令代码> [<< span="">命令参数>…]<< span="">回车>
其中:
�[可选节点ID]: 是多点CAN网络中的CAN节点地址。范围是0-127。后面紧跟小数点和轴号
�<< span="">轴号>: 指出是哪个轴(a,b,还是c)。轴号前面是一个小数点,后面有一个空格。
�<< span="">命令代码>: 单个字母的命令代码。和上述一样,可以是s,g, c, r, t, i.
�<< span="">命令参数>: 指出命令要做什么,怎么做。如果需要多个参数,中间请以空格隔开。
�<< span="">回车>: 回车键,指令结束。
多轴示例
指令 返回值 说明
.b g r0x32 v1200 获取b轴上RAM中0x32变量(电机实际位置)的值。示例返回1200
2.c g r0x32 v1200 获取2号节点上的c轴RAM中0x32变量(电机实际位置)的值。
3. 控制环工作模式
工作模式由一个状态变量(0x24)定义,赋予不同的值定义不同的工作模式,描述如下:
值 | 状态 |
0 | 未配置 |
1 | 电流环由编程电流值驱动 |
2 | 电流环由模拟输入值驱动 |
3 | 电流环由脉冲 方向输入驱动 |
4 | 电流环由内部的函数生产器驱动 |
5 | 电流环由通过PWM输入的UV命令驱动 |
11 | 速度环由编程的速度值驱动 |
12 | 速度环由模拟输入值驱动 |
13 | 速度环由脉冲 方向输入驱动 |
14 | 速度环由内部的函数生产器驱动 |
21 | 伺服模式下,位置环由轨迹生成器驱动 |
22 | 伺服模式下,位置环由模拟输入量驱动 |
23 | 伺服模式下,位置环由数字输入(脉冲 方向,主编码器等)驱动 |
24 | 伺服模式下,位置环由内部函数生成器驱动 |
25 | 伺服模式下,位置环由凸轮函数驱动 |
30 | 伺服模式下,位置环由CANopen接口驱动 |
31 | 微步模式下,位置环由轨迹生成器驱动 |
33 | 微步模式下,位置环由数字输入(脉冲 方向,主编码器等)驱动 |
34 | 微步模式下,位置环由内部函数生成器驱动 |
35 | 微步模式下,位置环由凸轮函数驱动 |
40 | 微步模式下,位置环由CANopen接口驱动 |
42 | 微步诊断模式,电流环由编程的电流值驱动,相角微步执行 |
3.1. 电流控制模式
/电流模式
设置驱动器工作在电流模式下,相关的变量说明如下(R-RAM, F-Flash):
变量 | 所在存储区 | 描述 |
0x24 | R F | 0- 停止(Disable) 1- 编程电流换控制模式 |
0x02 | R F | 编程的电流值。单位:0.01A |
0x6a | R F | 电流上升斜率。单位:mA/Sec 若赋值为0则会产生阶跃跳变 |
注意:驱动器使能情况下,若要改变电流值及斜率,请先设置斜率。
示例:
期望驱动器工作在电流控制模式,电流增加速率为0.5秒内增加到2A。观察电流值,当电流到达2A后修改输出控制电流在2秒内减小到1A。
指令 返回值 说明
s r0x6a 4000 ok 电流增加速率4A/Sec
s r0x02 200 ok 设置期望电流为2A
s r0x24 1 ok 启动电流控制模式,输出电流以4A/Sec速度增加
用以下命令观察实际输出电流值
g r0x0c v 150 通过驱动器读取实际电流值,该处显示的是1.5A
当电流到达2A时,改变电流速率及期望值
s r0x6a 500 ok 修改电流速率为0.5A/Sec
s r0x02 100 ok 修改给定值为1A,电流将以0.5A/Sec的速率减小
停止驱动器控制
s r0x24 0 ok Disable驱动器
3.1.3. PWM控制速度模式
该模式下,输出电流和输入的PWM的占空比成比例关系。多数的应用中PWM输入的设置都是通过TSM2软件来实现的,并且运行过程中不做修改。
相关的变量说明如下:
变量 | 存储区 | 描述 |
0x24 | R F | 0 -停止 3-PWM控制电流模式 |
0xa9 | R F | 比例因数:100%占空比对应的电流值。单位:0.01A |
0xa8 | R F | PWM输入设置(通常由TSM2软件设置)。具体参考表1-1 |
注意:在PWM输入控制电流和速度模式中都使用了0xa9和0xa8变量,在改变模式时请确认这些值是正确的。
表1-1
PWM输入类型 | PWM输入反转 | 符号输入反转 | 允许100%输出 | 值 |
50% | No | -- | No | 0x00 |
50% | No | -- | Yes | 0x08 |
50% | Yes | -- | No | 0x02 |
50% | Yes | -- | Yes | 0x0a |
100% | No | No | No | 0x01 |
100% | No | No | Yes | 0x09 |
100% | No | Yes | No | 0x05 |
100% | No | Yes | Yes | 0x0d |
100% | Yes | No | No | 0x03 |
100% | Yes | No | Yes | 0x0b |
100% | Yes | Yes | No | 0x07 |
3.2. 速度控制模式
3.2.2. 模拟量控制速度模式
该模式下,速度输出与模拟输入电压成比例关系。
相关的变量说明如下:
变量 | 存储区 | 描述 |
0x24 | R F | 0-停止 12-模拟量控制速度模式 |
0x19 | R F | 比例因数:10V模拟电压对应速度值。单位:0.1counts/s |
0x26 | R F | 模拟输入死区。单位:mV |
0x1a | R F | 模拟输入偏移量。 单位:mV |
0x36 | R F | 加速度限制。单位:1000counts/SecondP2P |
0x37 | R F | 减速度限制。单位:1000counts/SecondP2P |
0x39 | R F | 急速停止速率。单位:1000counts/SecondP2P |
注意:位置、速度和电流模式下都会用到0x19,0x26, 0x1a变量,在这些模式之间切换工作是请先确认这些值是正确的。
3.3.1. 位置控制模式下轨迹变量更新
当驱动器进入位置控制模式时,轨迹变量(速度、加速度和减速度)会被拷贝到轨迹生成器中。设置位置控制模式后,若要改变其中的任一个的值,需要在发送新的值后再发一个t 1命令。
3.3.3. 模拟量位置控制模式
该模式下,轴的位置由外部输入的模拟量来决定。
模拟位置命令按相对运动命令来执行。使能驱动器就会读取模拟电压值。电压的任何改变都会改变轴的相对位移,等价于使能后从那点开始的电压的改变量。要使用绝对位置,则每次驱动器使能时都要执行回初始点的操作。
相关的变量说明如下:
变量 | 存储区 | 描述 |
0x24 | R F | 0 -停止 22-模拟量位置控制模式 |
0x19 | R F | 比例因数:10V电压输入对应的位置。单位:counts |
0x26 | R F | 死区。单位:mV |
0x1a | R F | 模拟输入偏移量。该模式下请设置为0 |
0xcb | R F | 最大速度。单位:0.1counts/second |
0xcc | R F | 最大加速度。单位:10counts/secondP2P |
0xcd | R F | 最大减速度。单位:10counts/secondP2P |
0xcf | R F | 急速停止速度。单位:10counts/secondP2P |
注意:
1)位置、速度和电流模式下都会用到0x19,0x26, 0x1a变量,在这些模式之间切换工作时请先确认这些值是正确的。2)要想改变模拟量对应的方向,可以将比例因数设为负值。
&方向位置控制模式
该模式下,位置指令由一个数字端口的脉冲数给定,方向由另一个数字输入端口的逻辑电平决定。
比例因数设置每个输入脉冲所对应的位置指令的系数,单位是脉冲数counts。该系数以两个16位字的形式存放在变量0xa9中,第一个字是分子(位置脉冲数),第二个字是分母(输入脉冲数)。例如,要实现一个外部脉冲输入对应10个位置脉冲的话,系数就应该设置为10/1。为便于发送,需将它们转换成十六进制格式,这样系数应该是0x000a / 0x0001。最后结合指令代码到一起发送给驱动器:s r0xa9 0x000a0001.
要改变方向,请将分子改成负值。但是注意负数的十六进制表达方式。例如将上面的例子的方向改变的话,系数是-10/1,换成十六进制,-10是0xfff6,发送的指令就变成了
S r0xa9 0xfff60001.
相关的变量说明如下:
变量 | 存储区 | 描述 |
0x24 | R F | 0 -停止 23-数字输入位置模式-伺服电机 33-数字输入位置模式-步进电机 |
0xa8 | R F | 数字命令设置 脉冲 方向 0 = 上升沿增加位置 4096 = 下降沿增加位置 |
0xa9 | R F | 比例因数:输出脉冲/输入脉冲数 |
0xcb | R F | 最大速度。单位:0.1counts/second |
0xcc | R F | 最大加速度。单位:10counts/secondP2P |
0xcd | R F | 最大减速度。单位:10counts/secondP2P |
0xcf | R F | 急速停止速度。单位:10counts/secondP2P |
3.4. 参数限制及增益
变量0x90(仅位于RAM中)控制驱动器串口的波特率。若要改变波特率,只需向该变量中写入一个新值。例如要将波特率由9600改成115200,发送命令s r0x90 115200, 如果返回值是ok,表示修改成功,但是该返回值是按新的波特率115200通讯的。
一旦输入回车之后,就不能再以9600的波特率发送命令了。如果还以9600发送命令,就有可能被驱动器误以为是一个波特率复位命令,从而导致波特率从新被调回到9600. 此外,设置过新的波特率后,至少要间隔100毫秒的时间才可以开始以新的波特率跟驱动器通讯。
在读0x90变量的值时,注意读出来的值和设置的值可能并不完全一样。这是因为驱动器根据内部微处理器的时钟频率将波特率调整到了和设定值接近的一个值了。
3.4.2. 设置电流环限制和增益
速度环限制变量:
变量ID | 存储区 | 描述 |
0x3a | R F | 速度环速度限制。单位:0.01counts/second |
0x36 | R F | 速度环加速度限制。单位:1000counts/secondP2P |
0x37 | R F | 速度环减速度限制。单位:1000counts/secondP2P |
0xcf | R F | 急停速率。单位:10counts/secondP2P |
速度环增益变量:
0x27 | R F | 速度环比例增益(Vp) |
0x28 | R F | 速度环积分增益(Vi) |
3.4.3. 设置速度环限制和增益
位置环各参数的限制请参考第三章中编程位置控制模式。
位置环增益变量:
变量ID | 存储区 | 描述 |
0x30 | R F | Pp – 位置环比例增益 |
0x33 | R F | Vff – 速度前馈 |
0x34 | R F | Aff – 加速度前馈 |
0xe3 | R F | 位置环增益乘法器。100等价于1个因子 |
3.4.5. 监控状态
状态寄存器变量(0xa0):
该变量提供了驱动器的状态信息。0xa0是只读的,并且只在RAM中。各位代表的意义如下:
位 | 意义 |
0 | 短路 |
1 | 驱动器过温 |
2 | 过压 |
3 | 欠压 |
4 | 电机温度传感器有效 |
5 | 反馈错误 |
6 | 电机相位错误 |
7 | 电流输出受限 |
8 | 电压输出受限 |
9 | 正限位开关有效 |
10 | 负限位开关有效 |
11 | 使能输入无效 |
12 | 软件禁用驱动器 |
13 | 正在停止电机 |
14 | 电机制动有效 |
15 | PWM输出无效 |
16 | 正向软件限位条件 |
17 | 反向软件限位条件 |
18 | 跟随错误 |
19 | 跟随警告 |
20 | 驱动器复位 |
21 | 位置回转。位置变量不可能无限增加。当达到一定值之后就会回来,这种计数方式称作位置回转或取模计数。该位只在位置回转时有效 |
22 | 驱动器错误。发生了配置成锁定的驱动器错误。关于锁定错误的更多信息,请参考TSM2用户指导手册。 |
23 | 达到了速度上限值 |
24 | 达到了加速度上限值 |
25 | 位置超出了跟随窗口 |
26 | 回初始点开关有效 |
27 | 运动之末电机还未达到指定位置。 |
28 | 速度窗口。当绝对速度误差超过速度窗口值时置位 |
29 | 相位没有初始化。如果没有霍尔,驱动器初始化相位前该位一直有效 |
30 | 命令错误。PWM或其它命令信号有误 |
31 | 未定义 |
错误寄存器变量(0xa4):
错误寄存器变量显示了已发生的锁定错误。0xa4只存在RAM中。各位所代表的意义如下:
位 | 错误描述 |
0 | CRC失败。该错误很重要不能清除 |
1 | 驱动器内部错误。该错误很重要不能清除 |
2 | 短路 |
3 | 驱动器过温 |
4 | 电机过温 |
5 | 过压 |
6 | 欠压 |
7 | 反馈错误 |
8 | 相位错误 |
9 | 跟随错误 |
10 | 过流 |
11 | FPGA错误。该错误很重要不能清除。如果下载固件时发生该错误,重新下载可能会清除该错误 |
12 | 输入命令丢失 |
13-31 | 保留 |
注意:锁定的错误发生时,状态寄存器(0xa0)会置位。要清除错误,可以向相应的错误寄存器(0xa4)中写1。
3.4.7. 读数字输入
输入状态变量(0xa6):
可以通过0xa6变量读取驱动器可编程数字输入的高低电平状态。每个位所对应的输入号如下表所示。如果该端口是高电平,则相应的位置1,低电平则置0.
例如,如果读到的0xa6的值是33,转换成二进制是100001,由此可知IN1和IN6是高电平,其它输入口是低电平。
0xa6是只读的,并且只在RAM中。各位映射值如下所示。
注意:不同的驱动器,其可编程数字输入号是不同的。具体请参考相应文档。
位 | 输入 |
0 | 数字输入口1 |
1 | 数字输入口2 |
2 | 数字输入口3 |
3 | 数字输入口4 |
4 | 数字输入口5 |
5 | 数字输入口6 |
6 | 数字输入口7 |
7 | 数字输入口8 |
8 | 数字输入口9 |
9 | 数字输入口10 |
10 | 数字输入口11 |
11 | 数字输入口12 |
12 | 数字输入口13 |
13 | 数字输入口14 |
14 | 数字输入口15 |
15 | 数字输入口16 |
3.4.8. 读 --- 会报这种错误的例子 3 未知命令代码i, r, s, g等命令 命令提供的数据过多 ID --- 如10 数据值超出范围 14 未知轴状态情况 --- 如flash上 19 运动速度限制非法 21 运动减速度限制非法 jerk限制非法 27 ASCII发命令 ID号 CAN网络通信失败 --- 如<span style="font-size:10.0pt;font-family:"">g t0x18 or g r 0x18 or g r

提交
泰科智能 直线-力矩-音圈直驱伺服系统
泰科智能 带抱闸脉冲型闭环步进伺服系统
伺服电机的工作原理与特点
泰科智能 直线电机及平台
直线伺服电动机及其应用